Looker Explore Assistantで回答例をexamplesテーブルに登録し回答精度を向上させてみた(回答例の手動作成ver)

Looker Explore Assistantで回答例をexamplesテーブルに登録し回答精度を向上させてみた(回答例の手動作成ver)

Clock Icon2024.09.26

さがらです。

Looker Explore Assistantで回答例をexamplesテーブルに登録し回答精度を向上させてみたので、その内容を本記事でまとめてみます。(LLMのテクニックでいう、Few-shot promptingの実装になります。)

※Looker Explore Assistantのセットアップ自体は、下記のブログをご覧ください。注意点として、下記のブログは最新ではないリポジトリを使用しているため、最新のリポジトリを用いる場合は若干手順が異なっている可能性があります。最新のリポジトリで試す際は、リポジトリの各READMEも併せてご覧ください。

https://dev.classmethod.jp/articles/looker-try-explore-assistant/

やりたいこと

Looker Explore Assistantで問い合わせを行い、以下のグラフを作りたいとします。

2024-09-26_08h41_30

このグラフを作るために、Explore Assistantで「地図上で、直近30日の間の男女別の平均消費額を知りたい」と問い合わせをしてみましたが、性別がピボットされておらず作りたいグラフとは一致していません。

2024-09-26_08h28_25

今回、Explore Assistantで1つ目の作りたいグラフを描写するための、回答例の登録をやってみます。

回答例の登録

まずデフォルトの回答例ですが、セットアップ時に用いたlooker-explore-assistant/explore-assistant-examples/examples.jsonに記載がされており、これをPythonプログラムあるいはシェルスクリプトでBigQuery上のexplore_assistant_examplesにロードしているはずです。(実際のExploreの内容と関係ない内容でもロードしないと、Explore Assistantが機能しないため。)

2024-09-26_08h51_25

2024-09-26_09h05_10

この回答例を記述したjsonを編集して、再度BigQuery上のexplore_assistant_examplesにアップロードしていく、ということが今回行うことになります。

新しいjsonファイルでも、既存のexamples.jsonでも良いので、jsonファイルを開きます。

その後、すでに記載のある例と同じ書き方で、inputoutputを記入してます。

input

outputでほしいグラフを表示させるための、問い合わせ例文を記入します。

ここでは、冒頭で記述した「地図上で、直近30日の間の男女別の平均消費額を知りたい」とします。

output

事前にExplore上で手動で作成したグラフを表示した状態で、右上の歯車マークからShareを押します。

2024-09-26_09h22_09

その後、Expanded URLの中で、fields=から&vis=の前までをコピーします。これがoutputの内容になります。

2024-09-26_09h42_59

2024-09-26_09h43_46

注意点として、Explore上でis in the last 30 daysとしていたのが30+daysと変換されており、このままだとExplore Assistant上でエラーになります。

30+dayslast 30 daysに変更するのを忘れないでください。(おそらく、他にも同じようなエラーがあり得ると思うので、その際は随時調整をお願いします。)

2024-09-26_09h40_39

記入後のjsonのイメージ

下図のような形式になっていればOKです。

2024-09-26_09h25_20

この状態で、PythonプログラムあるいはシェルスクリプトでBigQuery上のexplore_assistant_examplesにロードします。

  • Pythonプログラムの場合
source .venv/bin/activate
python load_examples.py --project_id YOUR_PROJECT_ID --explore_id YOUR_EXPLORE_ID --table_id explore_assistant_examples --json_file examples.json
  • シェルスクリプトの場合 ※新しいリポジトリだとシェルスクリプトが提供されています。looker-explore-assistant/explore-assistant-examples/.envの内容の変更と、新しいjsonファイルを作成した場合はlooker-explore-assistant/explore-assistant-examples/load_examples.shJSON_FILEの値を事前に編集するのを忘れないでください。
source .venv/bin/activate
chmod +x load_examples.sh
./load_examples.sh

今回私はシェルスクリプトで実行しましたが、実行後、下図のように追加したinputoutputexplore_assistant_examplesテーブルに反映されていればOKです。

2024-09-26_09h32_39

2024-09-26_09h34_47

Explore Assistantでの動作確認

この上で、Explore Assistant上で冒頭で試した「地図上で、直近30日の間の男女別の平均消費額を知りたい」で再度問い合わせをしてみます。

すると、狙い通り性別がピボットされた状態でグラフが表示されました!(厳密にはグラフの可視化のオプションは異なっているのですが、これはグラフの可視化オプションの設定まで含めていないためです。含めた場合でも動くと思うのですが、要検証ですね…)

2024-09-26_09h57_31

最後に

Looker Explore Assistantで回答例をexamplesテーブルに登録し回答精度を向上させることを試してみました。

LLMの活用テクニックとしてFew-shot promptingという回答例を示すことで精度を向上させる方法がありますが、同じテクニックがExplore Assistantでも効果が見込めるということがわかりました。

補足事項:自動で回答例を作成したい方へ

また、この記事の内容を読んで「1つ1つ例を作るのは辛いよ…」と感じた方もいると思います。

そんな方向けに、looker-explore-assistant/explore-assistant-training内でNotebookが用意されており、これを使うことでLooker上のクエリ履歴に応じた回答例を自動で作成してくれる機能があります。(Looker上でクエリ履歴がないと動かないことや、関係ないクエリも参照してしまう可能性があることだけご注意ください。)

私はまだ試せていないのですが、すでにLooker上で多数の分析を行っている場合には役立つ場面もあると思います。参考になると幸いです。

https://github.com/looker-open-source/looker-explore-assistant/tree/main/explore-assistant-training

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.